import {IWebRequestAgentHelper} from "./IWebRequestAgentHelper";
import {TaskInfo} from "../Base/TaskPool/TaskInfo";

export interface IWebRequestManager {
    /// <summary>
    /// 获取 Web 请求代理总数量。
    /// </summary>
    TotalAgentCount:number;


/// <summary>
/// 获取可用 Web 请求代理数量。
/// </summary>
 FreeAgentCount:number;


/// <summary>
/// 获取工作中 Web 请求代理数量。
/// </summary>
 WorkingAgentCount:number;


/// <summary>
/// 获取等待 Web 请求数量。
/// </summary>
 WaitingTaskCount:number;


/// <summary>
/// 获取或设置 Web 请求超时时长，以秒为单位。
/// </summary>
 Timeout:number;


/// <summary>
/// Web 请求开始事件。
/// </summary>
WebRequestStart;

/// <summary>
/// Web 请求成功事件。
/// </summary>
WebRequestSuccess;

/// <summary>
/// Web 请求失败事件。
/// </summary>
WebRequestFailure;

/// <summary>
/// 增加 Web 请求代理辅助器。
/// </summary>
/// <param name="webRequestAgentHelper">要增加的 Web 请求代理辅助器。</param>
 AddWebRequestAgentHelper( webRequestAgentHelper:IWebRequestAgentHelper):void;

/// <summary>
/// 增加 Web 请求任务。
/// </summary>
/// <param name="webRequestUri">Web 请求地址。</param>
/// <returns>新增 Web 请求任务的序列编号。</returns>
 AddWebRequest( webRequestUri:string):number;

/// <summary>
/// 增加 Web 请求任务。
/// </summary>
/// <param name="webRequestUri">Web 请求地址。</param>
/// <param name="postData">要发送的数据流。</param>
/// <returns>新增 Web 请求任务的序列编号。</returns>
 AddWebRequest( webRequestUri:string, postData:number[]):number;


/// <summary>
/// 增加 Web 请求任务。
/// </summary>
/// <param name="webRequestUri">Web 请求地址。</param>
/// <param name="userData">用户自定义数据。</param>
/// <returns>新增 Web 请求任务的序列编号。</returns>
 AddWebRequest(webRequestUri:string, userData):number;


/// <summary>
/// 增加 Web 请求任务。
/// </summary>
/// <param name="webRequestUri">Web 请求地址。</param>
/// <param name="postData">要发送的数据流。</param>
/// <param name="priority">Web 请求任务的优先级。</param>
/// <param name="userData">用户自定义数据。</param>
/// <returns>新增 Web 请求任务的序列编号。</returns>
 AddWebRequest( webRequestUri:string,  postData:number[],  priority:number,  userData):number;

/// <summary>
/// 移除 Web 请求任务。
/// </summary>
/// <param name="serialId">要移除 Web 请求任务的序列编号。</param>
/// <returns>是否移除 Web 请求任务成功。</returns>
 RemoveWebRequest(serialId:number):boolean;

/// <summary>
/// 移除所有 Web 请求任务。
/// </summary>
 RemoveAllWebRequests():void;

/// <summary>
/// 获取所有 Web 请求任务的信息。
/// </summary>
/// <returns>所有 Web 请求任务的信息。</returns>
 GetAllWebRequestInfos():TaskInfo[];


}